package com.ruoyi.worker.service;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.worker.domain.OperationalRequirementsTable;
import com.ruoyi.worker.domain.SchemeConfiguration;

import java.util.List;
import java.util.Map;

/**
 * @ClassName OperationalService
 * @Description 运营管理service层
 * @Author leizhang
 * Date 2021/10/12 3:39 下午
 * @Version 1.0
 **/
public interface OperationalService {

    /**
     * @Description : 获取设备和班组，组别结构信息
     * @Author : leizhang
     * @Date 3:49 下午 2021/10/12
     * @param requestParams
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     **/
    public Map<String,Object> getEquipmentAndDeps(Map<String,Object> requestParams);

    /**
     * @Description : 保存方案信息
     * @Author : leizhang
     * @Date 5:42 下午 2021/10/12
     * @param requestParam
     * @return void
     **/
    public int addSchemeConfiguration(Map<String,Object> requestParam) throws Exception;

    /**
     * @Description : 配置方案信息获取(主表信息获取)
     * @Author : leizhang
     * @Date 10:23 上午 2021/10/13
     * @param schemeConfiguration
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     **/
    List<Map<String, Object>> getSchemeConfigurationTable(SchemeConfiguration schemeConfiguration);
    
    /**
     * @Description : 状态更新
     * @Author : leizhang
     * @Date 5:54 下午 2021/10/13
     * @param requestBody
     * @return void
     **/
    int updateSchemeConfiguration(Map<String, Object> requestBody);

    /**
     * @Description :获取方案配置详情
     * @Author : leizhang
     * @Date 9:44 下午 2021/10/13
     * @param id
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     **/
    Map<String, Object> getSchemeConfigurationDetail(int id);

    /**
     * @Description : 方案配置单信息删除
     * @Author : leizhang
     * @Date 1:36 下午 2021/10/18
     * @param
     * @return void
     **/
    void delSchemeConfigurationInfo(List<Integer> ids);

    /**
     * 运营需求单-班次/班组信息 获取
     * @param requestParam
     * @return
     */
    Map<String, Object> getTimeShiftAndDep(Map<String, Object> requestParam);

    /**
     * @Description : 获取预估业务量
     * @Author : leizhang
     * @Date 2:30 下午 2021/10/14
     * @param requestParam
     * @return java.util.Map<java.lang.String,java.lang.Object>
     **/
    AjaxResult getQualityPredictInfo(Map<String, Object> requestParam);

    /**
     * @Description : 获取启动策略信息以及对应的策略信息
     * @Author : leizhang
     * @Date 10:59 上午 2021/10/15
     * @param id
     * @return java.util.Map<java.lang.String,java.lang.Object>
     **/
    Map<String, Object> getSchemeConfigurationAndStrategy(int id);

    /**
     * @Description :新增运营需求单
     * @Author : leizhang
     * @Date 2:25 下午 2021/10/15
     * @param requestParam
     * @return void
     **/
    int addOperationalInfo(Map<String, Object> requestParam);

    /**
     * @Description : 运营需求单列表获取
     * @Author : leizhang
     * @Date 9:16 下午 2021/10/15
     * @param requestParam
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     **/
    List<Map<String, Object>> getOperationalList(Map<String, Object> requestParam);

    /**
     * @Description : 运营需求单详情获取
     * @Author : leizhang
     * @Date 11:19 下午 2021/10/15
     * @param requestParam
     * @return java.util.Map<java.lang.String,java.lang.Object>
     **/
    Map<String, Object> getOperationalDetail(Map<String,Object> requestParam) throws Exception;

    /**
     * @Description : 审核状态更新
     * @Author : leizhang
     * @Date 9:57 下午 2021/10/16
     * @param requestParam
     * @return void
     **/
    void updateAuditInfo(Map<String,Object> requestParam);

    /**
     * @Description : 运营需求单修改
     * @Author : leizhang
     * @Date 10:18 下午 2021/10/17
     * @param requestParam
     * @return void
     **/
    void updateOperationalInfo(Map<String, Object> requestParam);

    /**
     * @Description : 运营需求单删除
     * @Author : leizhang
     * @Date 2:35 下午 2021/10/18
     * @param ids
     * @return void
     **/
    void delOperationalInfo(List<Integer> ids);

    //班次信息获取
    List<Map<String, Object>> getTimShiftInfo(Map<String, Object> requestParam);


    /**
     * 更新用工需求预测需求人数
     * @param requestParam: {id:主键,demandNumber:实际用工人数}
     * @author Hush.
     * @since 2021/11/29 19:19
     */
    void updateDemandNumber(Map<String, Object> requestParam);

    /**-------------------运营需求单修改-----------------------**/
    /**
     * 新增运营需求(二期)
     *
     * @param operationalRequirementsTable 运营需求(二期)
     * @return 结果
     */
    public int insertOperationalRequirementsTable(OperationalRequirementsTable operationalRequirementsTable);

    /**
     * 修改运营需求(二期)
     *
     * @param operationalRequirementsTable 运营需求(二期)
     * @return 结果
     */
    public int updateOperationalRequirementsTable(OperationalRequirementsTable operationalRequirementsTable);
    
    /**
     * @Description : 获取方案信息
     * @Author : leizhang
     * @Date 9:45 PM 2021/12/23 
     * @param operationalRequirementsTable
     * @return java.util.Map<java.lang.String,java.lang.Object>
     **/
    public Map<String,Object> getFaInfo(OperationalRequirementsTable operationalRequirementsTable);

    /**
     * @Description : 获取排班信息
     * @Author : leizhang
     * @Date 10:59 PM 2021/12/26
     * @param requestParam
     * @return java.util.Map<java.lang.String,java.lang.Object>
     **/
    public  Map<String,Object> getWorkerNumber(Map<String,Object> requestParam)throws Exception;

    /**
     * 查询运营需求(二期)列表
     *
     * @param operationalRequirementsTable 运营需求(二期)
     * @return 运营需求(二期)集合
     */
    public List<OperationalRequirementsTable> selectOperationalRequirementsTableList(OperationalRequirementsTable operationalRequirementsTable);

    /**
     * 查询运营需求(二期)
     *
     * @param id 运营需求(二期)主键
     * @return 运营需求(二期)
     */
    public OperationalRequirementsTable selectOperationalRequirementsTableById(Integer id);

    /**
     * 删除运营需求(二期)信息
     *
     * @param id 运营需求(二期)主键
     * @return 结果
     */
    public int deleteOperationalRequirementsTableById(Long id);

    public void updateOperationalById(OperationalRequirementsTable operationalRequirementsTable);

    /**
     * @Description : 获取考勤信息  长期工考勤 临时工考勤
     * @Author : leizhang
     * @Date 1:58 PM 2021/12/29
     * @param requestParam
     * @return java.util.Map<java.lang.String,java.lang.Object>
     **/
    public Map<String,Object> getAttendanceInformation(Map<String,Object> requestParam) throws Exception;
}
